//
//  CZEmoticonToolBar.swift
//  微博
//
//  Created by 霸气的刘吉庆 on 16/4/26.
//  Copyright © 2016年 ios. All rights reserved.
//自定义这个toolBar,一堆属性吓死你

import UIKit

//定义一个枚举
enum CZEmoticonToolBarButtonType: Int {
    
    case Recent = 0, Defalut, Emoji, Lxh
    
}
class CZEmoticonToolBar: UIStackView {
    //提供给外界一个选中按钮的属性
    var selectedSection: Int = 0 {
        didSet{
            //取到对应的tag对应的按钮
            let button = self.viewWithTag(selectedSection) as! UIButton
            //当亲的按钮设置为选中状态
            //判断如果当前选中的按钮是已经选中的按钮
            if button != lastSelectedButton{
            
            button.selected = true
            lastSelectedButton?.selected = false
            lastSelectedButton = button
            
            }
        }

    }
    
    //定义属性记录最后一次选中的按钮
    var lastSelectedButton: UIButton?
    
    //点击最下面的表情所要执行的动画
    var emotionButtonClickClosure: ((type: CZEmoticonToolBarButtonType)->())?

    override init(frame: CGRect) {
        super.init(frame: frame)
        setupUI()
        
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    //设置这个UI界面
    private func setupUI(){
        
        distribution = .FillEqually
        tag = 20000
        //添加4个按钮
        
        addChilButton("最近", bgImageName: "compose_emotion_table_left", type: .Recent)
        addChilButton("默认", bgImageName: "compose_emotion_table_mid", type: .Defalut)
        addChilButton("Emoji", bgImageName: "compose_emotion_table_mid", type: .Emoji)
        addChilButton("浪小花", bgImageName: "compose_emotion_table_right", type: .Lxh)
        
        
    }
    //添加按钮的抽取方法,创建一个枚举,给每一个button,进行复制,等会可以获取到对应的按钮
    private func addChilButton(title: String,bgImageName: String,type: CZEmoticonToolBarButtonType){
        
        let button = UIButton()
        button.addTarget(self, action: "didClickEmoticonButton:", forControlEvents: .TouchUpInside)
        //设置button的tag
        button.tag = type.rawValue
        
        //设置button的属性
        //设置字体放的大小
        button.titleLabel?.font = UIFont.systemFontOfSize(14)
        button.setTitle(title, forState: .Normal)
       
        
        //设置不同状态下的文字
        button.setTitleColor(UIColor.whiteColor(), forState: .Normal)
        button.setTitleColor(UIColor.darkGrayColor(), forState: .Selected)
        
        
        
        //设置不同状态下的背景图片
//        button.setBackgroundImage(UIImage(named: ""), forState: .Normal)
//        button.setBackgroundImage(UIImage(named: ""), forState: .Selected)
        
        button.setBackgroundImage(UIImage(named: "\(bgImageName)_normal"), forState: .Normal)
        button.setBackgroundImage(UIImage(named: "\(bgImageName)_selected"), forState: .Selected)
        
        //将按钮添加到stackView里面
        addArrangedSubview(button)
        
    }
    
    @objc private func didClickEmoticonButton(button: UIButton){
        
        //如果用户点击了按钮,按钮的状态变为选中状态,其次就是记录这个按钮
        //首先判断选中的按钮是否是上一次选中的按钮
        //点击按钮定义一个闭包,刚刚为什么点击下面的按钮会出现错误呢,首先点击按钮执行了闭包,执行闭包的时候会进行滚动,滚动的时候又会进行setter方法,所以index不停被设置,出现不了我们想要的结果
        if lastSelectedButton == button {
            
            return
        }
        
        emotionButtonClickClosure?(type: CZEmoticonToolBarButtonType(rawValue: button.tag)!)
        
        //取消之前选中按钮的状态
        
        //上面contentView已经滚到位,但是什么呢,但是scrollViewDIdScroll 里面调用了set方法,没有滚到位
        lastSelectedButton?.selected = false
        
        button.selected = true
        
        lastSelectedButton = button
        
        //执行闭包,执行时间
        //这个int 装换成枚举值,这个执行在前面,下面设置的时候正好刷新
        
        
        
        
        
        
    }
    
    
    

}
